package org.javahispano.javacup.tacticas_aceptadas.jpautom.org.javahispano.javacup.tacticas.pitufos;



public class Campo implements Cloneable {
	private Jugador jugador[]=new Jugador[22];
	private Bola bola;
	private Info info;
	private boolean gol;
	private boolean saque;
	private int tiempo;
	private int goles1;
	private int goles2;
	private double desempate; //(0..1) 1: local; 0: visita; 0,5 empatel
	private int ultimoGolpear; //0..21 (-1 al inicio)

	public Campo() {
		for (int i=0; i<jugador.length; i++)
			jugador[i]=new Jugador();
		bola=new Bola();
	}


	public Campo(Campo c) {
		for (int i=0; i<jugador.length; i++)
			jugador[i]=(Jugador)c.jugador[i].clone();
		bola=(Bola)c.bola.clone();
		gol=c.gol;
		saque=c.saque;
		tiempo=c.tiempo;
		goles1=c.goles1;
		goles2=c.goles2;
		desempate=c.desempate;
		ultimoGolpear=c.ultimoGolpear;

		info=c.info; // ojo, no se duplica
	}

	@Override
	public Object clone() {
		return new Campo(this);
	}

	public Jugador getJugador(int j) {
		return jugador[j];
	}

	public Jugador getJugador(int j, int equipo) {
		if (equipo!=0 && equipo!=1) return null;
		return jugador[11*equipo+j];
	}

	public Bola getBola() {
		return bola;
	}

	public Info getInfo() {
		return info;
	}

	public void setInfo(Info info) {
		this.info=info;
	}

	public int getGoles1() {return goles1;}
	public void setGoles1(int goles1) {this.goles1 = goles1;}

	public int getGoles2() {return goles2;}
	public void setGoles2(int goles2) {this.goles2 = goles2;}

	public double getDesempate() {return desempate;}
	public void setDesempate(double desempate) {this.desempate = desempate;}

	public int getTiempo() {return tiempo;}
	public void setTiempo(int tiempo) {this.tiempo = tiempo;}

	public int getUltimoGolpear() {return ultimoGolpear;}
	public void setUltimoGolpear(int ultimoGolpear) {this.ultimoGolpear = ultimoGolpear;}



public static class Jugador implements Cloneable {
	public Pos pos=new Pos();
	public int tSinRematar;

	@Override
	public Object clone() {
		Jugador j=new Jugador();
		j.pos.set(pos);
			j.setTSinRematar(getTSinRematar());
		return j;
	}
	Jugador getCopia() {
		return (Jugador)clone();
	}

	public Pos getPos() { return pos; }

	public int getTSinRematar() {return tSinRematar;}
	public void setTSinRematar(int tSinRematar) {this.tSinRematar = tSinRematar;}



	@Override
	public String toString() {
		return "Jugador["+pos+"]";
	}
}


public static class Bola implements Cloneable{
	public Pos pos=new Pos();
	public Mov mov=new Mov();

	@Override
	public Object clone() {
		Bola b=new Bola();
		b.pos=(Pos)pos.clone();
		b.mov=(Mov)mov.clone();
		return b;
	}
	Bola getCopia() {
		return (Bola)clone();
	}

	public Pos getPos() { return pos; }
	public Mov getMov() { return mov; }
	
	@Override
	public String toString() {
		return "Bola["+pos.toString()+", "+mov.toString()+"]";
	}
}

}
